Skip to content

refactor(tui): 命令菜单/Activity/filepicker/progress 组件化并合并重复入口#144

Merged
minorcell merged 4 commits into
1024XEngineer:mainfrom
creatang:codex/issue-99-tui-activity-scroll
Apr 5, 2026
Merged

refactor(tui): 命令菜单/Activity/filepicker/progress 组件化并合并重复入口#144
minorcell merged 4 commits into
1024XEngineer:mainfrom
creatang:codex/issue-99-tui-activity-scroll

Conversation

@creatang

@creatang creatang commented Apr 4, 2026

Copy link
Copy Markdown
Collaborator

背景

本次对 TUI 做了组件化重构,并按“功能不变、合并重复实现”的原则,集中清理了重复入口和薄包装函数。
不再保留旧行为兼容过渡代码,直接切到新交互实现。

主要改动

1) Command Menu 组件化(C1)

  • 基于 list.Model 重做命令建议菜单,新增独立实现文件:
    • internal/tui/command_menu.go
  • 统一 /@& 的建议构建与渲染路径。
  • 支持键盘上下/翻页选择、Tab 应用建议、并可从 @ 空查询进入文件浏览。

2) Activity 组件化(C2)

  • Activity 改为 viewport 可滚动面板,不再是固定条目截断渲染。
  • Activity 纳入焦点循环(Sessions -> Transcript -> Activity -> Composer)。
  • 增加 Activity 区域鼠标滚轮滚动与命中判断逻辑。

3) @file 浏览模式(C3)

  • 新增 pickerFile 模式并接入 filepicker。
  • 支持目录跳转、文件过滤、选中文件后回填输入框。
  • 回填时做路径规范化(相对当前 workdir 优先,失败回退绝对路径)。

4) 进度反馈增强(C4)

  • 运行中优先展示 progress(带阶段文案),无可量化进度时自动回退 spinner。
  • 在 runtime 事件中补充阶段推进与清理逻辑(开始/工具规划/执行/结果整合/结束/异常)。

5) 重复函数与入口合并(重点)

  • 布局入口统一:
    • 删除 resizeComponents / resizeComposerLayout 薄包装,统一到 applyComponentLayout(...)
  • 消息渲染入口统一:
    • 删除 renderMessageBlockrenderMessageContent 包装,统一使用 ...WithCopy 主实现。
  • picker 逻辑去重:
    • providerItem / modelItem 合并为 selectionItem
    • provider/model 的 replace/select/open 切到共享通用函数。
  • 文件建议去重:
    • 删除 matchingFileReferences 包装,统一走 resolveFileReferenceSuggestions
  • 数值工具去重:
    • 删除自定义 max,统一使用内建实现,保留 clamp

依赖变化

  • go.mod / go.sum 增加:
    • github.com/charmbracelet/harmonica
    • github.com/dustin/go-humanize

测试与验证

已执行并通过:

  • go test ./internal/tui
  • go test ./internal/app ./internal/tui
  • go test ./...

风险与关注点

  • 输入焦点切换、Tab 行为、picker 打开/关闭路径涉及交互链路较多,需重点回归:
    • / 建议、@ 建议、& 命令提示
    • Activity 焦点与滚动
    • filepicker 选中文件回填
    • 运行中 progress/spinner 切换

@codecov

codecov Bot commented Apr 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.25735% with 53 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
internal/tui/update.go 75.92% 33 Missing and 6 partials ⚠️
internal/tui/input_features.go 87.80% 9 Missing and 1 partial ⚠️
internal/tui/state.go 95.12% 1 Missing and 1 partial ⚠️
internal/tui/view.go 92.59% 1 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

creatang added 2 commits April 4, 2026 18:03
…activity-scroll

# Conflicts:
#	internal/tui/commands.go
#	internal/tui/update_test.go
@minorcell minorcell merged commit 0df3b5b into 1024XEngineer:main Apr 5, 2026
2 checks passed
@creatang creatang deleted the codex/issue-99-tui-activity-scroll branch April 10, 2026 05:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants